Communicating information about a local machine to a browser application

ABSTRACT

The functionality of a browser application is enhanced using a browser plug-in, which enables the browser application to access portions of a file system not otherwise accessible to the browser application. The enhanced functionality provided by the browser plug-in is used in one example by an image uploading web application. The browser application may also start a task in the background, such as a task for uploading several images, and then monitor the progress of the task even when the browser application navigates away from the page that initiated the task. The browser application may use a local web server running on the client device to perform tasks, including the rendering of images and monitoring progress of long running tasks.

FIELD OF THE INVENTION

This invention relates to browser plug-ins for enhancing thecapabilities of a browser application used to access informationresources on a network.

BACKGROUND

A browser application allows a user to retrieve and present informationfrom resources on a network, such as the Internet or a private network,as well as from resources on a user computer. An information resource ora resource can be a file stored on a computer, for example, a document,an image file, a video file or any other media file. In a typical usecase, a web server sends information to a browser application running ona client device in the form of documents written in a markup language,such as Hypertext Markup Language (HTML). A markup language documentretrieved by a browser application can contain data and instructionsthat are executed on by the browser application. For example, a markuplanguage document can include scripts for execution by a scriptingengine supported by the browser application. An example of a scriptinglanguage supported by browser applications is JAVASCRIPT. A markuplanguage document may also include instructions written in the markuplanguage for rendering and drawing a user interface on the client deviceby the browser application.

To avoid intentional and unintentional harm caused by instructions inthe markup language document, browser applications restrict thecapabilities of the instructions that can be executed by a markuplanguage document. For example, a markup language document is allowed toaccess only restricted portions of the file system of the client device.If the markup language document instructions were allowed unrestrictedaccess to the file system of the client device, a malicious websitecould steal private information stored on client devices or even deleteuser files stored on client devices causing loss of data. The frameworkthat restricts the capabilities of the browser application is referredto as a “sandbox.” Moreover, the capabilities of the instructions thatcan be included in a markup language document are limited as compared toprocesses written using general purpose programming languages, forexample, C or C++. The performance obtained by implementing certainfunctionality using the scripting capabilities available in a markuplanguage document can also be slow compared to an implementation using ageneral purpose programming language.

SUMMARY

Embodiments of the invention enhance the capabilities of a browserapplication processing a markup language document, which is allowed onlyrestricted access to a portion of the file system of a client device.The client device may be a computer system, a portable communicationdevice, a cell phone, or any computing device that can execute a browserapplication. The functionality of the browser application is enhancedusing a browser plug-in, such as a “headless” plug-in (a browser plug-inthat does not have a user interface for interacting with the user).

In one embodiment, the browser application receives a markup languagedocument from a website, and the browser application processes themarkup language document, which contains instructions to access portionsof a file system that are not directly accessible by the browserapplication. To access those portions of the file system that thebrowser application is restricted from accessing directly, the browserapplication sends a request to the browser plug-in module identifyingthe portions of the file system to be accessed. The browser applicationreceives information associated with the identified portions of the filesystem from the browser plug-in and uses the information according tothe instructions in the markup language, for example, by rendering thereceived information for display on the client device. The informationassociated with the identified portions of the file system may includeany information associated with a particular file, including metadataassociated with a file or with a directory, such as a path for the fileor directory, a listing of directory contents, thumbnails for mediafiles in the directory, or any other metadata that may be used by thebrowser application.

To maintain security, in one embodiment, the markup language documentcauses the browser application to use a hash value with the request forinformation sent to the browser plug-in. The browser plug-in uses thehash value to verify the authenticity of the request, thereby preventingunauthorized markup language documents (e.g., obtained from otherwebsites) or other unauthorized applications from invoking thefunctionality provided by the browser plug-in.

The features and advantages described in this summary and the followingdetailed description are not all-inclusive. Many additional features andadvantages will be apparent to one of ordinary skill in the art in viewof the drawings, specification, and claims hereof.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating the system architecture of a clientdevice running a browser application interacting with a website, inaccordance with one embodiment of the invention.

FIG. 2 is an interaction diagram of a process in which a browserapplication uses a browser plug-in to access information describing thelocal storage of user files, in accordance with one embodiment of theinvention

FIG. 3 is an interaction diagram of a process in which a user interactswith a browser application to upload images stored in the client deviceto a web server, in accordance with one embodiment of the invention.

FIG. 4 is an example display of the browser application showing a webpage that allows a user to view the directory structure of user files,in accordance with one embodiment of the invention.

FIG. 5 is an example display of the browser application showing a webpage that allows a user to view thumbnails of images stored as userfiles, in accordance with one embodiment of the invention.

FIG. 6 is an example display of the browser application showing a webpage that allows a user to select thumbnails of images for upload to theweb server, in accordance with one embodiment of the invention.

FIG. 7 is an example display of the browser application showing a webpage that allows a user to start the process to upload selected imagefiles from the client device to the web server, in accordance with oneembodiment of the invention.

FIG. 8 is an example display of the browser application showing a webpage displaying the status of a process that uploads image files to theweb server, in accordance with one embodiment of the invention.

FIG. 9 is an interaction diagram of a process in which a browserapplication displays the status of a process after navigating to a webpage that does not embed the plug-in, in accordance with one embodimentof the invention.

The figures depict various embodiments of the present invention forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the invention described herein.

DETAILED DESCRIPTION Browser Plug-in for Enhancing Browser ApplicationFunctionality

The quality of user experience provided by a web application can beimproved if the capabilities of the instructions executed by the markuplanguage documents used for implementing the web application areenhanced. Furthermore, an enhanced instruction set for execution by amarkup language document can allow development of features of webapplications that may not be possible or highly cumbersome to implementwithout the enhanced instructions.

For example, browsers are typically configured so that web applicationapplications are prevented from accessing certain user files on a clientdevice to avoid malicious websites from gaining such access. However,this restriction is a blanket restriction that denies access to allapplications, including trusted applications running on authenticwebsites that are carefully implemented to avoid any harm to the clientdevice. For example, a web application that uploads image files from theclient device to the web server to allow the user to share images toother users needs to access the user files stored on the client device.Facilitating access by the markup language document to user files on theclient device allows ease of development of the applications (e.g. animage sharing web application) by developers, and a better userexperience for users, faster performance, and user interfaces customizedspecifically to particular websites, applications or activities.

This access, and the benefits that go along with it, can be facilitatedby a browser plug-in. The browser plug-in can provide access to variouslocal resources available on the client device that may not be typicallyaccessible to a markup language document. The browser plug-in can alsoprovide improved performance for tasks that are typically implementedinefficiently using the basic scripting language support available to amarkup language. In an embodiment, the browser plug-in allows a webapplication to start a long running task, for example, uploading ofimages from the client device to a web server and enables a user tomonitor the progress of the task periodically. The user can performother tasks using the web application while monitoring the long runningtask. In an embodiment, the browser plug-in allows computationallyintensive operations to be performed on the client device, therebyreducing the load on the web server. For example, image or videoprocessing tasks can be performed on the client device. The ability toperform processing on the client can be used to reduce the amount ofdata transferred between the client device and the web server, therebyreducing communication overhead and improving the performance of the webapplication.

A browser plug-in is implemented using a general purpose programminglanguage that provides more features compared to the instruction settypically available to a markup language document. The browser plug-inmay be based on technologies, such as ActiveX or NSAPI, for extendingthe functionality of the browser application. The plug-in can be madeavailable as a binary executable file. Since the browse plug-in may bewritten in a programming language that cannot be invoked from a markuplanguage document, an application programming interface to thefunctionality provided by the browser plug-in is provided using alanguage that can be invoked from the markup language document, forexample, a language supported by a scripting engine of a browserapplication. The browser plug-in must be downloaded and installed fromauthentic information sources to avoid downloading browser plug-in codethat may have been tampered with. A headless plug-in is a plug-in thatdoes not have a user interface for interacting with users.

The functionality of a browser application can be extended usingprograms written in the JAVA programming language that are calledapplets. However, a sandbox framework restricts the access to the clientdevice that is available to the applet program. A signed Java applet hasaccess to more resources of the client device compared to an unsignedjar. However, a signed jar may present the user with a dialog boxoutlining the requested access and providing the user with anopportunity to deny the access. However, for an application that isdownloaded by the user from an authentic source, the presentation ofdialog boxes requesting user's permission to access local resources mayresult in an undesirable user experience, in that it may be slower, aswell as lacking in customization for a particular purpose, website orapplication (both functionally and aesthetically).

System Architecture

FIG. 1 is a diagram illustrating the system architecture of a clientdevice 170 running a browser application 140 interacting over thenetwork 120 with a server 115 hosting a website. The server 115 includesa web server 105 and a content database 110. The client device 170includes a browser application 140, local storage for browser 150, localstorage for user files 155, a task execution module 165, browser plug-in145, and a local web server 160. The browser application 140 includes auser interface 125, a browser runtime 130, and a security module 135.

The client devices 170 is a computing device that can receive memberinput and can transmit and receive data via the network 120. Forexample, the client devices 170 may be desktop computers, laptopcomputers, smart phones, personal digital assistants (PDAs), or anyother device including computing functionality and data communicationcapabilities. The client devices 170 are configured to communicate vianetwork 120, which may comprise any combination of local area and/orwide area networks, using both wired and wireless communication systems.The web server 105 links the website hosted by server 115 via thenetwork 120 to one or more client devices 170. The web server 105 servesweb pages, as well as other web-related content, such as Java, Flash,XML, and so forth. The content served by the web server 105 is stored inthe content database 110. In an embodiment, the communication between aweb server and the browser application uses the hypertext transferprotocol (HTTP).

The browser application 140 allows a user to retrieve and presentinformation available in resources available on the internet or aprivate network. The web server 105 sends documents written in a markuplanguage, for example, HTML to the browser application 140. Aninformation resource is identified by a uniform resource locator (URL)and may be a web page, a media file, for example, image or video or anyother piece of content hosted by a server 115. The browser application140 has a user interface 125 for presenting information to the user aswell as allowing the user to provide input. The user input may comprisedata provided by the user or requests from the user which is sent to theserver 115. The server 115 hosting the website may respond by providingfurther information in the form of a markup language document. Themarkup language document comprises information and instructions forrendering the information provided and for taking actions on the clientdevice 170. The browser runtime 130 processes a markup language documentand renders it for display on the user interface 125 and takes actionsbased on instructions provided in the markup language document. Someembodiments of browser runtime 130 include a scripting engine 175 forprocessing instructions provided using a client-side scripting language,for example, JAVASCRIPT. The markup language document may includeinstruction provided using the client-side scripting language supportedby the scripting engine 175.

Since the markup language document can contain instructions to beprocessed by the client device 170, a malicious website can provideinstructions harmful to the client device. The security module 135controls the actions of the browser runtime 130 on the client device170. For example, the security module 135 prevents the browser runtime130 from accessing portions of the file system on the client device 170.The browser runtime 130 is allowed to access a portion of the localstorage 150 on the client device reserved for the browser. The portionof the local storage 150 may be used by the browser runtime 130 forcaching data, for storing browser cookies or other information usefulfor processing web pages. However, the browser runtime 130 may not beallowed to access other portions of the local storage on the clientdevice, for example, the portion of the local storage 155 that storesuser files. Examples of user files stored in the local storage 155 mayinclude text documents, images, and video files stored by the user onthe client device.

The browser plug-in is a module that includes program code to enhancethe capabilities of the browser application 140. The browser runtime 130can interact with the browser plug-in 145 to use the functionalityprovided by the browser plug-in 145. The actions of the browser plug-in145 are not subject to the constraints of the security module 135.Hence, actions of browser runtime 130 that may not be allowed by thesecurity module 135 may be facilitated by the browser plug-in 145. Forexample, access to local storage of user files 155 may not befacilitated by the security module 135 but may be allowed by the browserplug-in 155. Since a browser plug-in has the capability of bypassing thesecurity imposed by the security module 135, it is important for theuser of the client device 170 to make sure that the browser plug-in 145is downloaded from an authentic and trusted source. In an embodiment,the browser plug-in 145 may accept requests only if the markup languagedocument is obtained from a predetermined domain or a set ofpredetermined domains. The browser plug-in verifies the authenticity ofthe source of the markup language documents and if the markup languagedocument is obtained from any domain other than the predetermineddomains the request is denied. This prevents unauthorized domains fromsending markup language documents and utilizing the capabilities of thebrowser plug-in 145 for malicious purposes. The browser plug-in 145 maystart an upload thread 165 for executing long running tasks requested bythe browser runtime 130. The browser plug-in 145 can start a local webserver 160 on the client device to utilize functionality supported by aweb server. The local web server 160 is a process running on the clientdevice. For example, the local web server 160 can be used by the browserruntime 130 to render images available on the client device 170.

FIG. 2 shows an interaction diagram of a process in which a browserruntime 130 interacts with the browser plug-in 145 to access informationfrom the local storage of user files 145, in accordance with oneembodiment of the invention. The browser runtime 130 of the browserapplication 140 receives 205 a markup language document from the server115. The markup language document includes instructions to either loadthe browser plug-in 145 if it is not loaded in the client device 170 orobtain a link to the plug-in 145 if it has been previously loaded in theclient device 170. In some embodiments, the markup language instructionto obtain or create a link to the browser plug-in is a markup languagetag called “<embed>.” The <embed> tag specifies an attribute providingthe file path of the executable file with the plug-in code. For example,a markup language document may include the tag <embed src=“ . . ./bin/plugin.exe” . . . > to specify that the executable file for theplug-in is called “plugin.exe” and is available in the directory “ . . ./bin.” The browser runtime 130 processes 210 the markup languagedocument obtained. The processing 210 of the markup language documentmay include parsing of the markup language document, processing ofinstructions provided in the markup language document, and rendering themarkup language document for display using the user interface 125. Themarkup language document may request 215 information related to a filethe browser runtime 130 is prevented form accessing by the securitymodule 135. For example, the markup language document may requestinformation for a user file in the local storage of user files 155.

The browser plug-in 145 verifies the authenticity of the request to makesure that an unauthorized domain is not attempting to exploit thecapabilities of the browser plug-in 145. In an embodiment, the markuplanguage document includes instruction to generate a hash value that canbe used by the browser plug-in 145 to verify the authenticity of themarkup language document. The hash value can be based on a combinationof different pieces of information. In an embodiment, the hash value iscomputed based on information collected from the client device, forexample, the process ID of the browser application. In an embodiment,information used for computing the hash value includes a randomlygenerated numeric value. If the request for information is associatedwith a file, the hash value computation includes the full path name ofthe file. Every request for information from the browser runtime 130 tothe browser plug-in 145 includes the hash value. The browser plug-inindependently generates the hash value based on the full path name ofthe file and verifies the generated value against the value provided inthe request. If the hash value provided in the request to the browserplug-in 145 matches the hash value generated by the browser plug-in 145,the request is processed, or else the request is denied. An unauthorizeddomain sending a markup language document is unlikely to know thedetails of the mechanism used to generate the hash value and hence isunlikely to provide a hash value that matches the value generated by thebrowser plug-in 145. The hash generation mechanism can use a valuecalled salt that is known to the web server 105 and the browser plug-in145. The salt comprises random bits used as input to a hash generationfunction. Client specific data may be used for generation of the hash.For example, the process ID of the browser application 140 can be usedas part of the salt used for hash generation. Some embodiments use apublic key encryption mechanism based on hash values for authenticatingthe source of request to the browser plug-in 145.

If the authenticity of the request is successfully verified 220, thebrowser plug-in processes the request, for example, by sending acorresponding request for information to the local storage of user files155. Since the browser plug-in is authorized to access the local storageof user files 155, the local storage of user files 155 sends therequested information. In some embodiments the request 225 and response230 may be a function call implemented using a programming language, forexample, C or C++ used for implementing the browser plug-in 145. Thebrowser plug-in may perform processing 235 using the information relatedto the file. In an embodiment, the information associated with the fileis metadata associated with the file, for example, the file type, fileextension, an executable program associate with the file, or a userpreference associated with the file. The browser plug-in may generate athumbnail for an image file. The thumbnail may be generated or computedbased on metadata associated with the file. For example, a file with aparticular extension may be displayed using a particular thumbnailassociated with the file extension. Alternatively, a file associatedwith a particular executable program may be displayed using a thumbnailassociated with the corresponding executable program. In one embodiment,large files, for example video files that need to be uploaded to the webserver 105 can be encoding by the browser plug-in 145 on the user deviceso as to reduce the upload time and also to reduce the server loadcaused by the encoding of files.

The browser plug-in 235 sends the requested information to the browserrun-time 130. The information received is used by the browser runtime130 to render the markup language document for display using the userinterface 125. In some embodiments the browser plug-in may providefunctionality that allows access to local resources available on theclient device. For example, the location of the client device 170 can beobtained using the wireless capabilities available in the client device170. In some embodiments, computationally intensive tasks can beperformed by the browser plug-in, thereby offloading work from on theweb server 105 to the client device 170. A video encoding task can beperformed in the background while the user can perform other tasks onthe web application. The user is not required to wait for the longrunning task to complete before navigating away from the web pageexecuting the task.

In an embodiment, the browser plug-in 145 is used for caching frequentlyused information on the client device 170 to avoid the communicationoverhead of repeatedly sending the information from the server 115. Inanother embodiment, the browser plug-in 145 is used to download programcode or other information from the website hosted by server 115. Sincethe browser plug-in 170 has authentication mechanisms for verifying thesource of a request, the user can have confidence that the program codeor information is downloaded from an authentic source. The ability todownload program code from authentic sources by the browser plug-in 170provides better user experience in installing software from the websitehosted by server 115.

Photo Uploader Example Implementation

The capabilities of the browser plug-in 145 can be used by applicationsin various ways. FIG. 3 shows an interaction diagram of a process inwhich the user 305 interacts with the browser application 140 to uploadimages stored in the local storage 155 to the server 115. When the imageupload application is started by receiving the appropriate web pagesfrom the server 115, the browser plug-in is instantiated 305. The markuplanguage document from server 115 that starts the image uploadapplication includes instructions to cause the browser runtime 130 torequest 310 information related to the top-level directories of thelocal storage. The browser plug-in sends 315 the information describingthe top-level directories to the browser runtime 130. The top-leveldirectories may be predetermined, for example, root directories of thedisk drives of the client device, or operating system specificdirectories intended for storage of user files. Browser runtime 130renders the top-level directories and displays 320 them in the userinterface 125. FIG. 4 shows a screenshot of the user interface of theimage upload application showing the top-level directories. The panel410 of the user interface shows the top-level directories, including theDesktop directory, the Home directory, and the Pictures directory.

The user 305 can select a particular directory displayed to see contentsof the directory. For example, in FIG. 4, the Pictures directory 430 isselected by the user. The browser runtime 130, in response to the userselection, requests 330 the directory information for the selecteddirectory from the browser plug-in 145. The browser plug-in 145 obtainsthe requested directory information and sends 335 the requestedinformation to the browser runtime 130. The browser runtime 130 displaysthe information in the user interface 125. The panel 420 in FIG. 4 showsthe sub-directories of the selected directory 430 includingsub-directories 440. The process of selecting directories to view thecorresponding sub-directories can be repeated by the user. For example,the FIG. 5 shows the user selection of the directory 440 called “PhotoBooth” in the panel 420 to see its sub-directories in the panel 520.

The requested information of a directory, for example, directory 550sent 335 by the browser plug-in 145 may include image files. The imagefiles in a web application are preferably displayed using thumbnails.For each image file within a directory, the browser plug-in sends a URLthat can be used to access further information about the image file. TheURL of an image file allows the browser run-time to access the imagefile information using the local web server 160. For example, thebrowser runtime 130 can provide the URL of an image file to the localweb server 160 to request 340 a thumbnail corresponding to the imagefile. The local web server 160 processes 345 the contents of the imagefile to generate a thumbnail image and sends 350 the thumbnail image tothe browser runtime 130. The browser runtime 130 renders the imagethumbnails received from the local web server 160 and displays 355 thethumbnails along with the sub-directory information in the userinterface 125. FIG. 5 shows the panel 570 displayed to the userinterface as showing the thumbnails 560 of the images corresponding tothe image files stored in the selected directory 550. The access to thelocal web server 160 requires the browser application to process scriptsdownloaded from one domain implemented by web server 105 and manipulateproperties of the document using data from another domain implemented bythe local web server 160. The browser application 140 may implement asame-origin policy that prevents scripts loaded from one domain fromprocessing properties of a document from another domain. An embodimentovercomes this restriction of a browser by using a data interchangeformat that allows execution of a dynamic script provided as a string.For example JavaScript Object Notation with Padding (JSONP) allows a<SCRIPT> tag that can include script code from external domains. The URLfor the local web server can be embedded within the <SCRIPT> tag toretrieve information from the corresponding website. A URL can bereferred to by the code running within the <SCRIPT> tag. This allows thebrowser plug-in 145 to work around the same origin policy of the browserapplication 140.

The user 305 can select 360 one or more image files using the thumbnails560 for uploading the image files to the server 115. The FIG. 6 shows ascreenshot of the image files 630 selected by the user 350. Thethumbnails of the image files selected by the user may be distinguishedfrom the unselected images by displaying a border 610 around thethumbnail of the selected image. A user interface button 620 allows theuser to indicate that the user has completed the interactions with userinterface for browsing the directories and selecting the images forupload. Accordingly, in one embodiment, the user 305 is presented with auser interface shown in FIG. 7 that indicates the number of files 710selected by the user for uploading. FIG. 7 also shows a user interfacebutton 720 that can be used to send a request 365 to the browser runtime130 to start uploading the files.

The browser runtime 130 requests the browser plug-in 365 to start theupload process for the selected images. The browser plug-in 365 startsthe upload thread 165 that executes the process of uploading theselected image files to the server 115. The browser plug-in 365 canobtain the status of the upload process from the upload thread 165 andpresent the status to the browser runtime 160. The browser runtime 130displays 380 the upload status to the user in the user interface 125.FIG. 8 shows a screenshot of an embodiment showing the status of theupload process using a progress indicator 810. The number of filesuploaded 620 at any given time can be displayed. In other embodiments,information related to the upload process status including the amount ofdata that has been uploaded or the amount of data that remains to beuploaded is shown. In an embodiment, the information describing statusof the task is shown as a percentage of the total amount of data thatneeds to be uploaded. In another embodiment, the information describingstatus of the task is the number of files remaining to be uploaded. Inanother embodiment, the information describing status of the taskincludes an estimate of time elapsed since the upload task started. Inanother embodiment, the information describing status of the taskincludes an estimate of time remaining for completing the upload task.

The upload of images to the server 115 from the client device 170 cantake significant amount of time and the user may continue to performother activities while monitoring the progress of the upload task. Theuser may navigate away from the web page used for starting the uploadtask. As a result a new markup language document is retrieved from theweb server 105 and displayed by the browser application 140. A markuplanguage document includes specific instructions that create andmaintain a link with the browser plug-in allowing the browser runtime130 to interact with the browser plug-in 145 while processing the markuplanguage document. The instruction that creates and maintains a linkwith the browser plug-in 145 is called an instruction to embed thebrowser plug-in. Not all documents provided by a domain may includeinstructions to embed the browser plug-in 145 since execution of theseinstructions may slow the processing of the markup language documents.When the user navigates away from the web page of the image uploadingapplication, a new markup language document can be received that doesnot include instructions to create and maintain a link to the browserplug-in 145. The browser runtime 130 can store information in the localstorage for browser 150 that allows a markup language document withoutan embed instruction for the browser plug-in 145 to communicate with theupload thread 165 for retrieving the status of the image upload task.

Communicating the Status of a Background Process

FIG. 9 illustrates how a markup language document can obtain the statusof the upload process and display it without embedding the browserplug-in 145. Although described in terms of the photo uploading example,it can be appreciated that this process can be used to obtain the statusof any process running on the client device or otherwise incommunication with the client device. For example, a markup languagedocument may start a thread that begins downloading and installing fileson the client device. Embodiments of the invention may be used to obtainthe status of this process and display the status in the browserapplication, even when the browser application is processing a markuplanguage document that does not have the background process embedded orotherwise linked to the markup language document.

As illustrated in the example of FIG. 9, a first document received 905by the browser runtime 130 from the server 115 includes the instructionsfor maintaining a link to the browser plug-in 145. The browser runtime130 processes 910 the first markup language document and starts 915 theexecution of the image upload task. The first markup language documentincludes instructions to communicate with the local storage for thebrowser 150 and save information associated with the task.

In an embodiment, a browser cookie mechanism is used to storeinformation associated with the task stored on the local storage for thebrowser 150. The browser cookie stores one or more name value pairsrepresenting information as text strings. In an embodiment, the browsercookie stores a URL for a webpage that can be accessed using the localweb server 160 and the start time of the upload task. The browserruntime 130 can use the URL for the webpage available on the local webserver 160 to obtain the status of the upload task.

In some embodiments, the URL for the webpage on the local serverincludes a hash value for authentication purposes. The local web server160 generates a hash value independently to match against the hash valueof the URL to verify the authenticity of the source of the markuplanguage document accessing the local web server 160. As a result,markup language documents from unauthorized sources are unable to accessthe local web server 160. This prevents unauthorized websites fromexploiting the local web server 160 for malicious purposes.

In an embodiment, the browser plug-in 145 is required to generate thehash value used for verifying authenticity of the source of the markuplanguage. The browser plug-in 145 can be embedded in every web pageloaded by the browser application 140 from the server 115 that needs todisplay the progress of the upload task. However, embedding the browserplug-in 145 in a web page slows the loading of the web page. Hence, thebrowser plug-in 145 is not embedded in every web page form server 115 inorder to improve the performance of the web page loads. Instead of usingthe browser plug-in 145, the URL including the hash value can directlybe accessed from the local web server 160 to obtain the progressinformation. Hence the URL is stored on the client device 170 using thebrowser cookie mechanism. Subsequent web pages loaded by the browserapplication 140 that do not embed the browser plug-in 145 includeinstructions to retrieve the URL using the corresponding browser cookiestored on the client device 170 and use the URL to fetch the progressinformation.

When the user navigates away from the first markup language document,the browser runtime 130 receives 925 and processes 930 the second markuplanguage document, which does not embed the browser plug-in 145. Thesecond markup language document includes instructions to process thesaved task information if available, for example, the browser cookiestored 920 by the first markup language document. The browser runtime130 sends a request 935 to the local storage for browser 150 to retrievethe saved task information and the local storage 150 returns the savedtask information. The saved task information allows the browser runtime130 to request 945 task information from the local web server 160. Inresponse to the request 945, the local web server polls 950 status ofthe upload thread 165. The upload thread 165 returns the status of theupload task to the local web server 160 and the local web sever 160returns the status of the task to the browser runtime 130. If the taskis still executing, the browser runtime 130 renders 965 the secondmarkup language and displays the status of the task, for example, asshown in FIG. 8.

If the upload task is complete, appropriate information is displayed onthe user interface 125, and the saved information associated with theupload task may be cleared from the local storage 150. If the savedinformation associated with the upload task is cleared, any subsequentmarkup language document loaded from server 115 would not attempt tocontact the local web server 160, unless and until a new upload task isstarted. In an embodiment, the task information is saved as a browsercookie, and the browser cookie is cleared when the upload task iscompleted.

FIG. 9 shows the same instance of browser application 140 receiving thefirst and the second markup language document. The instance of browserapplication that receives the first markup language document can bedifferent from the instance of the browser application that downloadsthe second markup language. For example, the instance of browserapplication 140 that receives the first markup language document can beclosed and the browser application 140 restarted to instantiate a secondinstance that receives the second markup language. The processing of thesteps of the process after receiving the second markup language documentcan be performed by the second instance of the browser application 140to display the status of the upload task.

FIG. 9 assumes that the first and the second markup language documentsare received from the same website hosted by server 115 since bothmarkup language documents include instructions to process the saved taskinformation. Markup language documents obtained from two separatewebsites provided by two independent vendors are unlikely to haveinstructions to process the saved task information since the developmenteffort for the two markup language documents must be coordinated. Hence,as illustrated in FIG. 9, the user navigates away from the first markuplanguage document but stays on a web page obtained from the same domain.In an embodiment, the first and second markup language documents can beobtained from separate domains provided the two include instructions toprocess the saved task information and are authorized to access thelocal web server 160. Alternative embodiments provide a toolbar providedby the domain that provides the first markup language document. Thetoolbar stays on the browser application 140 independent of the domainthat the user is navigating. The toolbar can continue to provide statusof the upload task allowing the user to navigate to any web pageprovided by any domain.

The tasks that can be monitored by the process illustrated in FIG. 9 arenot limited to upload of images but can be other tasks. For example, thestatus of a long running computation provided by the browser plug-in canbe monitored by the process illustrated in FIG. 9. Other embodiments canmonitor upload of other large files, for example, media files includingvideos, audio files or large documents. In other embodiments, the longrunning task can be a system maintenance task performed on the clientdevice 170.

Alternative Applications

The foregoing description of the embodiments of the invention has beenpresented for the purpose of illustration; it is not intended to beexhaustive or to limit the invention to the precise forms disclosed.Persons skilled in the relevant art can appreciate that manymodifications and variations are possible in light of the abovedisclosure.

Some portions of this description describe the embodiments of theinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs or equivalent electrical circuits,microcode, or the like. Furthermore, it has also proven convenient attimes, to refer to these arrangements of operations as modules, withoutloss of generality. The described operations and their associatedmodules may be embodied in software, firmware, hardware, or anycombinations thereof.

Any of the steps, operations, or processes described herein may beperformed or implemented with one or more hardware or software modules,alone or in combination with other devices. In one embodiment, asoftware module is implemented with a computer program productcomprising a computer-readable medium containing computer program code,which can be executed by a computer processor for performing any or allof the steps, operations, or processes described.

Embodiments of the invention may also relate to an apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the required purposes, and/or it may comprise ageneral-purpose computing device selectively activated or reconfiguredby a computer program stored in the computer. Such a computer programmay be stored in a tangible computer readable storage medium or any typeof media suitable for storing electronic instructions, and coupled to acomputer system bus. Furthermore, any computing systems referred to inthe specification may include a single processor or may be architecturesemploying multiple processor designs for increased computing capability.

Embodiments of the invention may also relate to a computer data signalembodied in a carrier wave, where the computer data signal includes anyembodiment of a computer program product or other data combinationdescribed herein. The computer data signal is a product that ispresented in a tangible medium or carrier wave and modulated orotherwise encoded in the carrier wave, which is tangible, andtransmitted according to any suitable transmission method.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the invention be limited notby this detailed description, but rather by any claims that issue on anapplication based hereon. Accordingly, the disclosure of the embodimentsof the invention is intended to be illustrative, but not limiting, ofthe scope of the invention, which is set forth in the following claims.

What is claimed is:
 1. A computer implemented method comprising:receiving a markup language document by an Internet browser applicationexecuting on a computer, wherein the markup language document includesinstructions to generate a value based on a local resource of the clientdevice; processing the markup language document by the Internet browserapplication, the processing comprising determining a first value basedon instructions received from the markup language document; sending arequest for information to a browser plug-in module, wherein the requestincludes the first value determined by the Internet browser application;determining, by the browser plug-in module, a second value based on therequested information describing the local resource of the clientdevice; verifying, by the browser plug-in module, the authenticity of asender of the markup language document based on a comparison of thesecond value and the first value; responsive to the verifying, receivingby the browser application the requested information; and rendering thereceived information by the Internet browser application according toinstructions in the markup language document.
 2. The computerimplemented method of claim 1, further comprising: responsive to aninstruction in the markup language document, loading the browser plug-inmodule.
 3. The computer implemented method of claim 1, wherein thebrowser plug-in is headless.
 4. The computer implemented method of claim1, wherein the requested information includes metadata for a file on thecomputer.
 5. The computer implemented method of claim 1, wherein therequested information includes metadata for a directory on the computer.6. The computer implemented method of claim 1, wherein the requestedinformation includes picture information associated with a file on thecomputer.
 7. The computer implemented method of claim 1, wherein therequested information includes content from a file on the computer. 8.The computer implemented method of claim 1, wherein sending the requestfor information to the browser plug-in module comprises performing acall to a function provided by the browser plug-in module.
 9. Thecomputer implemented method of claim 1, wherein the rendering comprisesrendering names of files from the computer by the Internet browserapplication.
 10. The computer implemented method of claim 1, wherein therendering comprises rendering a thumbnail image associated with one ormore files on the computer.
 11. A computer program product comprising anon-transitory computer-readable storage medium containing a markuplanguage document, the markup language document comprising: contentitems encoded in a markup language comprising instructions for renderinginformation in an Internet browser application running on a computersystem; and instructions for retrieving information associated with thecomputer system and rendering the information by the Internet browserapplication, the instructions for being interpreted by the Internetbrowser application executing on the computer system to cause thecomputer system to: send a request for information to a browser plug-inmodule, wherein the request includes the first value determined by theInternet browser application; receive by the browser application therequested information; and render the received information by theInternet browser application according to instructions in the markuplanguage document, wherein the browser plug-in module is configured to:determine a second value based on the information describing the localresource of the client device, and verify the authenticity of a senderof the markup language document based on a comparison of the secondvalue and the first value.
 12. The computer program product of claim 11,wherein the instructions for retrieving information cause the computersystem to load the browser plug-in module.
 13. The computer programproduct of claim 11, wherein the requested information includes pictureinformation associated with a file on the computer system.
 14. Thecomputer program product of claim 11, wherein the requested informationincludes a path of a file on the computer system.
 15. A computerimplemented method comprising: receiving, by a browser plug-in, arequest for information, wherein the request is sent by the Internetbrowser application in response to processing of instructions in amarkup language document received by the Internet browser application,wherein the markup language document includes instructions to generate avalue based on a local resource of the client device, and wherein therequest comprises a first value based on instructions received from themarkup language document; determining, by the browser plug-in, a secondvalue based on information describing the local resource of the clientdevice; verifying, by the browser plug-in, the authenticity of a senderof the request for information based on a comparison of the second valueand the first value; and responsive to the verifying, sending to theInternet browser application the requested information, wherein theinformation is rendered by the Internet browser application according toinstructions in the markup language document.
 16. The computerimplemented method of claim 15, wherein the requested informationincludes metadata for a file on the computer.
 17. The computerimplemented method of claim 15, wherein the requested informationincludes metadata for a directory on the computer.
 18. The computerimplemented method of claim 15, wherein the requested informationincludes picture information associated with a file on the computer. 19.The computer implemented method of claim 15, wherein the requestedinformation includes content from a file on the computer.
 20. Thecomputer implemented method of claim 15, wherein the requestedinformation includes a path of a file on the computer.
 21. A computerprogram product comprising a non-transitory computer-readable storagemedium containing a markup language document, the markup languagedocument comprising: content items encoded in a markup languagecomprising instructions for rendering information in an Internet browserapplication running on a computer system; and instructions forretrieving information associated with the computer system and renderingthe information by the browser application, the instructions for beinginterpreted by the Internet browser application executing on a computersystem to cause the browser plug-in to: receive a request forinformation by a browser plug-in module, wherein the request is sent bythe Internet browser application in response to processing ofinstructions in a markup language document received by the Internetbrowser application, wherein the markup language document includesinstructions to generate a value based on a local resource of the clientdevice, and wherein the request comprises a first value based oninstructions received from the markup language document; determine, bythe browser plug-in, a second value based on information describing thelocal resource of the client device; verify, by the browser plug-in, theauthenticity of a sender of the request for information based on acomparison of the second value and the first value; and responsive tothe verifying, send to the Internet browser application the requestedinformation, wherein the information is rendered by the Internet browserapplication according to instructions in the markup language document.